One example of a service oriented architecture (SOA) is the Enterprise Services Architecture (ESA), which is based on the SAP NetWeaver technology platform and is implemented using SAP business objects. An SAP business object is a logical object that represents business processes in software. Examples of business objects are “Order” and “Business Partner”—business objects that are found in the ESA. A business object model specifies its components and allowed operations. For example, components of the Order business object are the order items and their suppliers. Examples of operations are creation, deletion and search.
SAP NetWeaver uses a search and classification engine called TREX for business object search. TREX stores a business object as tables connected by joins. The TREX search and classification engine performs fast search on the tables that make up a business object. The TREX engine resides in main memory and offers not only standard search functions but also range searches and sorting by one or more attributes. All usual data types are supported, for example STRING, INTEGER and DATE. The TREX search and classification engine also computes the joins between the tables that make up a business object. The joins are specified in advance in a static logical structure called a metamodel. The joins in a metamodel form a join graph. The metamodel represents the tables connected by joins as an object with attributes.
The main components of a metamodel are:                View attributes: These are the object attributes visible for the user. Each view attribute gets its data from a column of a basis table. A query may refer only to the defined view attributes.        Joins: These connect sets of basis tables into an object and are defined in the metamodel. Some search and classification engines such as TREX support inner joins and outer joins.        Anchor table: This is the basis table containing the keys used to identify rows.        The computation of joins is very complex and consumes a great amount of resources, so optimizing joins is critical to achieving good overall performance.        